Azure Machine Learning (Azure ML) একটি ক্লাউড-বেসড প্ল্যাটফর্ম যা ডিপ লার্নিং এবং মেশিন লার্নিং মডেলগুলির জন্য উন্নত প্রশিক্ষণ, ডিপ্লয়মেন্ট এবং ব্যবস্থাপনা সেবা প্রদান করে। এটি মডেল তৈরির পাশাপাশি, মডেল deployment (ডিপ্লয়মেন্ট) প্রক্রিয়াও সহজ করে তোলে, যাতে মডেলটি বিভিন্ন production environments-এ ব্যবহার করা যায়।
এখানে Azure Machine Learning-এর মাধ্যমে model deployment করার একটি পর্যায়ক্রমিক প্রক্রিয়া আলোচনা করা হবে।
Azure Machine Learning - Model Deployment
মডেল ডিপ্লয়মেন্ট হল মডেলটি প্রশিক্ষণ শেষ করার পরে উৎপাদন বা ব্যবহারকারী পরিবেশে বাস্তবায়ন করার প্রক্রিয়া। Azure ML প্ল্যাটফর্মে ডিপ্লয়মেন্টের জন্য বেশ কিছু অপশন রয়েছে:
- Web Service Deployment (REST API দিয়ে)
- Azure Kubernetes Service (AKS) Deployment
- Azure Container Instances (ACI) Deployment
নিচে বিস্তারিতভাবে বিভিন্ন ডিপ্লয়মেন্ট পদ্ধতি সম্পর্কে আলোচনা করা হয়েছে।
1. Web Service Deployment (REST API)
এটি একটি জনপ্রিয় পদ্ধতি, যেখানে মডেলটি একটি RESTful API হিসেবে ডিপ্লয় করা হয়, যা ইনপুট ডেটা গ্রহণ করে এবং পূর্বাভাস বা ফলাফল প্রদান করে।
ধাপ ১: Azure ML Workspace তৈরি করা
Azure ML-এ মডেল ডিপ্লয়মেন্টের জন্য প্রথমে একটি workspace তৈরি করতে হবে, যা ডিপ্লয়মেন্ট প্রক্রিয়া পরিচালনা করবে।
from azureml.core import Workspace
ws = Workspace.create(name="myworkspace",
subscription_id="<your-subscription-id>",
resource_group="<your-resource-group>",
create_resource_group=True,
location="eastus2")
ধাপ ২: মডেল ট্রেনিং ও মডেল সংরক্ষণ
মডেলটি আগে প্রশিক্ষণ করতে হবে এবং তারপর মডেলটি .pkl বা .h5 ফর্ম্যাটে সংরক্ষণ করতে হবে।
from azureml.core.model import Model
import joblib
# মডেল প্রশিক্ষণ শেষে সংরক্ষণ
joblib.dump(model, "model.pkl")
# Azure ML-এ মডেল নিবন্ধন করা
model = Model.register(workspace=ws,
model_path="model.pkl",
model_name="my_model")
ধাপ ৩: স্কোরিং স্ক্রিপ্ট তৈরি করা
ডিপ্লয়মেন্টের জন্য একটি স্কোরিং স্ক্রিপ্ট তৈরি করতে হবে। এই স্ক্রিপ্টটি ইনপুট গ্রহণ করবে এবং মডেল ব্যবহার করে পূর্বাভাস প্রদান করবে।
# score.py
import joblib
import json
import numpy as np
from sklearn.externals import joblib
def init():
global model
model_path = Model.get_model_path('my_model')
model = joblib.load(model_path)
def run(data):
try:
data = json.loads(data)
input_data = np.array(data["input"])
result = model.predict(input_data)
return json.dumps({"result": result.tolist()})
except Exception as e:
return json.dumps({"error": str(e)})
ধাপ ৪: ডিপ্লয়মেন্ট কনফিগারেশন তৈরি করা
এখন আপনি একটি ACI বা AKS এ মডেল ডিপ্লয় করতে পারেন। প্রথমে ডিপ্লয়মেন্ট কনফিগারেশন তৈরি করতে হবে।
from azureml.core.webservice import AciWebservice, Webservice
from azureml.core.image import ContainerImage
# Container image তৈরি করা
image_config = ContainerImage.image_configuration(execution_script="score.py",
runtime="python",
conda_file="env.yml")
# ACI কনফিগারেশন তৈরি
aci_config = AciWebservice.deploy_configuration(cpu_cores=1,
memory_gb=1,
tags={"framework": "scikit-learn"})
# Webservice এ ডিপ্লয় করা
service = Model.deploy(workspace=ws,
name="my-aci-service",
models=[model],
image_config=image_config,
deployment_config=aci_config)
service.wait_for_deployment(show_output=True)
ধাপ ৫: মডেল ব্যবহার করা
একবার মডেলটি ডিপ্লয় করা হলে, আপনি REST API মাধ্যমে এটি ব্যবহার করতে পারেন।
import requests
import json
# Web service URL
scoring_uri = service.scoring_uri
# Input data
data = {"input": [[1, 2, 3, 4]]}
headers = {'Content-Type': 'application/json'}
# API কল
response = requests.post(scoring_uri, data=json.dumps(data), headers=headers)
print(response.json())
2. Azure Kubernetes Service (AKS) Deployment
Azure Kubernetes Service (AKS) হল একটি শক্তিশালী পদ্ধতি যখন আপনি বড় স্কেল বা উচ্চ পারফরম্যান্সের জন্য মডেল ডিপ্লয় করতে চান। AKS ডিপ্লয়মেন্ট ডিস্ট্রিবিউটেড পরিবেশে দ্রুত এবং স্কেলযোগ্য মডেল ডিপ্লয়মেন্ট নিশ্চিত করে।
ধাপ ১: AKS ক্লাস্টার তৈরি করা
প্রথমে AKS ক্লাস্টার তৈরি করতে হবে:
from azureml.core.compute import AksCompute, ComputeTarget
from azureml.core.compute_target import ComputeTargetException
aks_config = AksCompute.provisioning_configuration(cpu_cores=2, memory_gb=16)
aks_target = ComputeTarget.create(ws, "myaks-cluster", aks_config)
aks_target.wait_for_completion(show_output=True)
ধাপ ২: মডেল ডিপ্লয় করা
মডেলটি AKS তে ডিপ্লয় করার জন্য Webservice API ব্যবহার করা হয়:
aks_config = AksWebservice.deploy_configuration(cpu_cores=1, memory_gb=2)
service = Model.deploy(workspace=ws,
name="aks-service",
models=[model],
deployment_config=aks_config,
compute_target=aks_target)
service.wait_for_deployment(show_output=True)
3. Azure Container Instances (ACI) Deployment
ACI হল একটি সহজ এবং দ্রুত পদ্ধতি, যেখানে আপনি ছোট এবং দ্রুত ডিপ্লয়মেন্টের জন্য কন্টেইনার ভিত্তিক ডিপ্লয়মেন্ট ব্যবহার করতে পারেন। এটি কম্পিউটেশনাল খরচ এবং স্কেলিং এর জন্য উপযুক্ত।
ধাপ ১: ACI কনফিগারেশন তৈরি করা
from azureml.core.webservice import AciWebservice, Webservice
from azureml.core.image import ContainerImage
aci_config = AciWebservice.deploy_configuration(cpu_cores=1, memory_gb=1)
ধাপ ২: মডেল ACI তে ডিপ্লয় করা
service = Model.deploy(workspace=ws,
name="aci-service",
models=[model],
image_config=image_config,
deployment_config=aci_config)
service.wait_for_deployment(show_output=True)
সারাংশ
Azure Machine Learning-এ model deployment অনেক সহজ ও কার্যকরী হয়েছে। আপনি Web Service (REST API), AKS এবং ACI সহ বিভিন্ন বিকল্পের মাধ্যমে মডেল ডিপ্লয় করতে পারেন। এসব পদ্ধতির মাধ্যমে আপনি আপনার মডেলকে প্রোডাকশন পরিবেশে দ্রুত এবং স্কেলেবলভাবে ডিপ্লয় করতে সক্ষম হবেন, যার মাধ্যমে ডেটার সাথে ইন্টারঅ্যাক্ট করা এবং পূর্বাভাস প্রদান করা সম্ভব হবে।
Read more